제출 #77110

#제출 시각아이디문제언어결과실행 시간메모리
77110zetapiGift (IZhO18_nicegift)C++14
100 / 100
1470 ms254116 KiB
#include "bits/stdc++.h"
using namespace std;

#define pb  push_back
#define mp  make_pair
#define ll  long long
#define int long long
#define itr iterator

typedef pair<ll,ll> pii;

const ll MAX=2e6;
const ll INF=1e12;

vector<pii> vec;

vector<pair<ll,set<ll>>> res;

ll N,K,sum,mx,arr[MAX];

void insert(int X,int Y,int Z)
{
	vec.pb(mp(X,Z));
	vec.pb(mp(Y+1,-Z));
}

signed main()
{
	ios_base::sync_with_stdio(false);

	cin>>N>>K;
	for(int A=1;A<=N;A++)
	{
		cin>>arr[A];
		sum+=arr[A];
		mx=max(mx,arr[A]);
	}
	if(sum%K or mx>sum/K)
		return cout<<-1,0;
	int lst=1,row=K,col=sum/K;
	for(int A=1;A<=N;A++)
	{
		if(lst+arr[A]-1>col)
			insert(lst,col,A),
			insert(1,arr[A]-(col-lst+1),A);
		else
			insert(lst,lst+arr[A]-1,A);
		lst=(lst-1+arr[A])%col+1;
	}
	sort(vec.begin(),vec.end());
	int ptr=0;
	set<int> st;
	while(ptr<vec.size())
	{
		int cur=ptr;
		while(ptr<vec.size() and vec[cur].first==vec[ptr].first)
		{
			if(vec[ptr].second<0)
				st.erase(-vec[ptr].second);
			else
				st.insert(vec[ptr].second);
			++ptr;
		}
		if(ptr<vec.size())
			res.pb(mp(vec[ptr].first-vec[cur].first,st));
	}
	cout<<res.size()<<"\n";
	for(auto A:res)
	{
		cout<<A.first<<" ";
		for(auto B:A.second)
			cout<<B<<" ";
		cout<<"\n";
	}
	return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

nicegift.cpp: In function 'int main()':
nicegift.cpp:53:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  while(ptr<vec.size())
        ~~~^~~~~~~~~~~
nicegift.cpp:56:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   while(ptr<vec.size() and vec[cur].first==vec[ptr].first)
         ~~~^~~~~~~~~~~
nicegift.cpp:64:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(ptr<vec.size())
      ~~~^~~~~~~~~~~
nicegift.cpp:40:12: warning: unused variable 'row' [-Wunused-variable]
  int lst=1,row=K,col=sum/K;
            ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...