Idea: En primer lugar, podemos encontrar que el rango de datos es relativamente pequeño, por lo que podemos tomar un método violento para atravesar directamente cada posición en la línea para encontrar el daño y encontrar el valor más pequeño.
#include <bits/stdc++.h>
using namespace std;
int n,m;
struct node{
int index;
int x;
};
int main()
{
while(cin>>n>>m){
node no[n+10];
for(int i=0;i<m;i++){
cin>>no[i].index>>no[i].x;
}
long long min1 = 99999999999;
for(int i=0;i<=n;i++){
int cnt = 0;
for(int j=0;j<m;j++){
cnt+= abs(i-no[j].index)*no[j].x;
}
if(cnt<min1) min1 = cnt;
}
cout<<min1<<endl;
}
return 0;
}