제출 #100130

#제출 시각아이디문제언어결과실행 시간메모리
100130TadijaSebezPalembang Bridges (APIO15_bridge)C++11
22 / 100
79 ms6756 KiB
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
#define ll long long
const int N=100050;
const ll inf=9e18;
int l[N],r[N];
int main()
{
	int k,n;
	scanf("%i %i",&k,&n);
	char a,b;
	vector<pair<int,int>> events;
	vector<int> unq;
	int L=0,R=0;
	ll ls=0,rs=0;
	ll all=0;
	for(int i=1;i<=n;i++)
	{
		scanf("\n%c %i %c %i",&a,&l[i],&b,&r[i]);
		all+=abs(l[i]-r[i])+(a!=b);
		if(a!=b)
		{
			if(l[i]>r[i]) swap(l[i],r[i]);
			events.pb(mp(l[i],0));
			events.pb(mp(r[i],1));
			unq.pb(l[i]);
			unq.pb(r[i]);
			L++;
			ls+=l[i];
		}
	}
	sort(events.begin(),events.end());
	sort(unq.begin(),unq.end());
	unq.resize(unique(unq.begin(),unq.end())-unq.begin());
	int j=0;
	ll ans=inf;
	for(int i=0;i<unq.size();i++)
	{
		int x=unq[i];
		while(j<events.size() && events[j]==mp(x,0)) L--,ls-=x,j++;
		ans=min(ans,(ll)x*R-rs+ls-(ll)x*L);
		while(j<events.size() && events[j]==mp(x,1)) R++,rs+=x,j++;
	}
	if(unq.size()==0) ans=0;
	printf("%lld\n",all+2*ans);
	return 0;
}

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

bridge.cpp: In function 'int main()':
bridge.cpp:39:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<unq.size();i++)
              ~^~~~~~~~~~~
bridge.cpp:42:10: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   while(j<events.size() && events[j]==mp(x,0)) L--,ls-=x,j++;
         ~^~~~~~~~~~~~~~
bridge.cpp:44:10: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   while(j<events.size() && events[j]==mp(x,1)) R++,rs+=x,j++;
         ~^~~~~~~~~~~~~~
bridge.cpp:12:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%i %i",&k,&n);
  ~~~~~^~~~~~~~~~~~~~~
bridge.cpp:21:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("\n%c %i %c %i",&a,&l[i],&b,&r[i]);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...