我第二个题开的longlong 还是93左右,感觉自己哪里写崩了?
#include<cstdio> #include<cstdlib>
#include<algorithm> #include<cstring> #include<iostream> using namespace std; long long int ans[100005]; int main() { long long int n,k,x; scanf("%lld%lld%lld",&n,&k,&x); if(k<n) { printf("-1\n"); return 0; } long long maxn=(k+k-n+1)*n/2; if(maxn<x) { printf("-1\n"); return 0; } long long minn=(1+n)*n/2; if(minn>x) { printf("-1\n"); return 0; } for(long long int i=1;i<=n;i++) ans[i]=i; long long int dif=x-minn; // printf("%d\n",dif); while(dif>0) { for(long long int i=n;i>=1;i--) { // k-n+1 if( (k-n+i) - i <= dif) { ans[i]=k-n+i; dif=dif-(k-n); // printf("(%d,%d)",ans[i],dif); } else{ ans[i]=i+dif; dif=0; // printf("(%d,%d)",ans[i],dif); break; } } } for(long long int i=1;i<=n;i++) { if(i!=n) printf("%lld ",ans[i]); else printf("%lld\n",ans[i]); } return 0; }