C
https://codeforces.com/contest/1088/problem/C
int n,m,k,T,minn=INF,maxx,cnt,sum,tmp,f=0,ans,f1;
set<int> s;
int a[maxn];
int main(){
cin>>n;
rep(i,1,n){
cin>>a[i];
a[i]+=4001;
}
cout<<n+1<<endl;
cout<<1<<" "<<n<<" "<<4001<<endl;
rep(i,1,n){
cout<<2<<" "<<i<<" "<<a[i]-i<<endl;
}
return 0;
}
int n,m,k,T,minn=INF,maxx,cnt,sum,tmp,f=0,ans,f1;
set<int> s;
int a[maxn];
int main(){
cin>>n;
rep(i,1,n){
cin>>a[i];
a[i]+=2*n;
}
cout<<n<<endl;
cout<<1<<" "<<n<<" "<<2*n<<endl;
rep(i,1,n-1){
cout<<2<<" "<<i<<" "<<a[i]-i<<endl;
}
return 0;
}
B
区间 差
set 或 unique 去重
不够用0补
ll n,m,k,T,minn=INF,maxx,cnt,sum,tmp,f=0,ans,f1;
string s;
ll a[maxn];
int main(){
cin>>n>>k;
rep(i,1,n){
cin>>a[i];
}
sort(a+1,a+n+1);
ll p=unique(a+1,a+n+1)-a; //p-1最后一个不重复的
rep(i,1,min(p-1,k)){
cout<<a[i]-a[i-1]<<endl;
}
while(p<=k){
cout<<0<<endl;
p++;
}
return 0;
}
B
输出非0的最小值
每次减去非0的最小值
再输出非0的最小值
k次操作 无法减输出0
int n,m,k,T,minn=INF,maxx,cnt,sum,tmp,f=0,ans,f1;
set<int> s;
int a[maxn];
int main(){
cin>>n>>k;
rep(i,1,n){
cin>>tmp;
s.insert(tmp);
}
int now=0;
rep(i,1,k){
if(s.size()==0)
cout<<0<<endl;
else{
cout<<((*s.begin())-now)<<endl;
now+=(*s.begin()-now);
s.erase(s.begin());
}
}
return 0;
}